Facebook解释大规模服务中断事件调查原因(组图)

当地时间10月4日,Facebook就“宕机”发布声明,对服务中断的原因进行解释。

声明中称:“据我们工程团队的了解,协调数据中心之间网络流量的主干路由器的配置变化导致了通信中断,由此对我们数据中心的通信方式产生了连带影响,使我们的服务陷入停顿。”

声明还指出,服务器已恢复在线,公司正在努力使其完全恢复正常运行。“我们想表明,我们相信这次中断的根本原因是一个错误的配置变化,没有证据表明用户数据因这次停机而受到影响。”

此前,Facebook、Instagram、WhatsApp及一系列该公司拥有的其他社交软件近7个小时无法访问。随后,Facebook创始人马克·扎克伯格因故障致歉,扎克伯格在脸书上写道,“Facebook、Instagram、WhatsApp和Messenger恢复运行。我因今日出现的故障致歉:我知道你们有多么依赖我们的服务与你在乎的人保持联系。”


Facebook大规模服务中断事件调查:BGP与DNS服务器离线所致

BGP 是“边界网关协议”的缩写,作为一套允许在互联网上的自治系统(AS)之间交换路由信息的机制,其在刚刚过去的 Facebook 大规模服务中断事件中也扮演了重要的角色。Cloudflare 指出,BGP 使得互联网上工作的大型路由器能够拥有庞大的、不断更新的可能路由列表,从而将各个挽留过数据包送达最终的目的地。

(图自:Cloudflare)

若缺乏 BGP,互联网路由器将不知如何正确工作。毕竟 Internet 的本意,就是在 BGP 绑定之下、一个套着另一个的网络。

以社交媒体巨头 Facebook 为例,BGP 使之能够向构成互联网的其它网络通告自身的存在。

BGP / SAN 简图

然而在周一的服务大中断事件中,Facebook 却乌龙般地没有宣告自身的存在,最终导致互联网服务提供商(ISP)和其它网络无法与之建立正确的连接。

TheVerge编辑 Alex Castro 指出,BGP 又被称作互联网上的“邮局系统”或“空中交通管制员”,但他更喜欢将之看成一幅众人参与制作和更新的地图,以引导用户正确访问油管或脸书等网络服务。

Tom Strickx 与 Celso Martinho 在 Cloudflare 专栏文章中写道:每个单独的网络,都有一个被称作 ASN 的自治系统编号,而自治系统(AS)是具有统一内部路由策略的单个网络。

AS 能够产生前缀(比如其控制的一组 IP 地址)并传输,以让互联网知晓如何将信息送达特定的 IP 地址组,而 Cloudflare 的 ASN 编号就是 AS13335 。

然后每个 ASN 都需要借助 BGP 向互联网通告其前缀路由,否则将无人知晓该如何与之取得连接、以及在哪里找到它们。

在 UTC 协调世界时的 16:58,Cloudflare 开始留意到 Facebook 已停止公布其 DNS 前缀路由。在最不严重的情况下,这也意味着该公司的域名解析服务(DNS)已不可用。

由于 Cloudflare 的 1.1.1.1 DNS 解析器无法再响应询问 facebook.com 或 instagram.com 等网络服务的 IP 地址查询,大规模服务中断也开始变得无法避免。

与此同时,尽管仍有其它 Facebook IP 地址在被路由,但它们所能起到的效果也相当有限 —— 毕竟只要 DNS 服务躺下了,与 Facebook 相关的服务也变得实际上无法访问了。

Cloudflare 指出,其会跟踪全球网络中观察到的所有 BGP 更新与公告。然而 UTC 时间 15:40 左右,Cloudflare 留意到了 Facebook 的路由变更高峰,麻烦在这个时候开始集中爆发。

说到这,本次 Facebook 大规模服务中断的前因后果已基本疏离完成。首先是路由被撤回,接着 Facebook 的 DNS 服务器离线。

问题发生一分钟后,Cloudflare 工程师们开始思考为何 1.1.1.1 无法解析 facebook.com、甚至一度怀疑是自家公司的系统出现了问题。

视频截图(来自:USENIX | YouTube)

最后,Santosh Janardhan 在 2021 年 10 月 4 日(本周一)更新的一篇文章中指出,该问题是由于 Facebook 在协调其数据中心之间网络流量的骨干路由器的配置变更所引发的。

NSDI 21 Running BGP in Data Centers at Scale - USENIX(via)

推荐阅读